BFF (Backend for Frontend) es un patrón de arquitectura en el desarrollo de software que consiste en crear una capa intermedia entre el frontend y los servicios backend generales. Su propósito es optimizar la comunicación y la experiencia del usuario en aplicaciones con múltiples tipos de clientes (web, móvil, IoT, etc.).
Supongamos que tienes una aplicación de comercio electrónico con una web y una app móvil. Sin un BFF, el frontend tendría que hacer múltiples llamadas a diferentes microservicios (usuarios, productos, carritos, pagos). Con un BFF, la app solo hace una llamada y el BFF se encarga de gestionar todo internamente.
Si vas a implementar un Backend for Frontend (BFF) en Java, lo ideal es organizar los paquetes de forma modular y escalable. Aquí te dejo una estructura recomendada basada en buenas prácticas con Spring Boot.
com.miempresa.bff
│── application/ # Capa de aplicación (casos de uso, servicios)
│ ├── service/ # Lógica de negocio y procesamiento de datos
│ ├── dto/ # Objetos de transferencia de datos (Data Transfer Objects)
│── config/ # Configuraciones de la aplicación (CORS, seguridad, etc.)
│── controller/ # Controladores REST (exposición de APIs)
│── exception/ # Manejadores de excepciones personalizadas
│── integration/ # Comunicación con microservicios y APIs externas
│ ├── client/ # Clientes HTTP (Feign, RestTemplate, WebClient)
│ ├── mapper/ # Transformación de datos entre DTOs y modelos
│── security/ # Configuración de seguridad (JWT, OAuth2, autenticación)
│── util/ # Clases utilitarias y helper functions
│── BffApplication.java # Clase principal de Spring Boot
✅ application/
✅ config/
✅ controller/
✅ exception/
✅ integration/
✅ security/
✅ util/
✅ Facilita la escalabilidad y mantenimiento.
✅ Separa responsabilidades de forma clara.
✅ Reutilización de código y modularidad.
✅ Permite una integración fácil con otros microservicios.
¿Planeas usar Spring Boot para el BFF o tienes en mente otra tecnología? 🚀
Como jeuga BFF en la arquitectura hexagonal
📌 BFF en la Arquitectura Hexagonal (Ports & Adapters)
La arquitectura hexagonal (también llamada Ports & Adapters) separa la lógica de negocio del resto de las capas mediante puertos (interfaces) y adaptadores (implementaciones concretas). En este enfoque, el BFF actúa como un adaptador que conecta los clientes (UI, móviles, etc.) con los servicios de backend de manera controlada y optimizada.